package com.personal.dao;

import com.personal.entity.Product;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author 萌新
 * @version 1.0
 * @date 2021/4/22 15:27
 */

public interface ProductDao {
    /**
     * 插入商品
     * @param product
     * @return
     */
    int insertProduct(Product product);

    /**
     * 根据productId查询product
     * @param productId
     * @return
     */
    Product selectProductById(long productId);

    /**
     * 修改商品
     * @param product
     * @return
     */
    int updateProduct(Product product);

    /**
     * 支持分页功能的查询product
     * 需要支持根据商品名称（支持模糊查询）、商品状态、shopId、商品类别的查询以及组合查询
     * @param productCondition
     * @param roxIndex 从第几行开始取
     * @param pageSize 返回多少行数据(页面上的数据量)
     *                 比如：rowIndex为1，pageSize为5  即为  从第1行开始取，取5行数据
     * @return
     */
    List<Product> selectProductList(@Param("productCondition") Product productCondition,
                                    @Param("roxIndex") int roxIndex,@Param("pageSize") int pageSize);

    /**
     * 按照条件查询  符合前台传入的条件的商品总数
     * @param productCondition
     * @return
     */
    int selectCountProduct(@Param("productCondition") Product productCondition);

    /**
     * 删除productCategory的时候，需要先将tb_product中该productCategoryId值为空
     * @param productCategoryId
     * @param shopId
     * @return
     */
    int updateProductCategory2Null(@Param("productCategoryId") long productCategoryId,@Param("shopId") long shopId);

}
